package com.cskaoyan.mall.promo.service;

import com.cskaoyan.mall.common.result.Result;
import com.cskaoyan.mall.order.dto.OrderTradeDTO;
import com.cskaoyan.mall.order.query.OrderInfoParam;
import com.cskaoyan.mall.promo.api.dto.SeckillGoodsDTO;
import com.cskaoyan.mall.promo.model.OrderRecord;
import com.cskaoyan.mall.promo.model.SeckillGoods;

import java.util.List;

public interface PromoService {

    /**
     * 返回全部的秒杀商品列表
     */
    List<SeckillGoodsDTO> findAll();

    /**
     * 根据商品ID获取秒杀商品信息
     *
     * @param skuId
     */
    SeckillGoodsDTO getSeckillGoodsDTO(Long skuId);

    /**
     * 组装秒杀商品的订单结算页数据
     */
    OrderTradeDTO getTradeData(String userId, Long skuId);

    /**
     * 提交秒杀订单
     */
    void submitOrder(OrderInfoParam orderInfo);

    /**
     * 把秒杀商品列表信息导入Redis
     */
    void importIntoRedis();

    /**
     * 根据商品id与用户ID查看订单信息
     */
    boolean checkOrder(Long skuId, String userId);

    /**
     * 清理Redis缓存
     */
    void clearCache();

    void submitOrderInTransaction(OrderInfoParam orderInfo);

}
